Piper: The Mouse Management Tool

Hi all. I’m really impressed with Piper, and it has enabled me to use my Logitech G600 on linux! I had a few questions regarding some situational things that I wanted to toss around here in the forum:

  1. How would one compile this from source? It uses a meson build process and I am totally unfamiliar with this, as its different from the ./configure, make, and make install command series that I am familiar with.

  2. Does the piper program automatically start when the OS boots up? It seems as if this is the case, although I am curious if it actually flashes the button mapping from the program to the mouse hardware…

  3. How on EARTH did the guys who developed the piper program reverse engineer the mouse hardware to reprogram it?! This is incredibly impressive and is something that can apply to a lot of other devices like the loupedeck and the azeron gaming devices.

Thanks all in advance for your time!

1 Like

There’s no reason to as it’s in the community repository. However, if you’re curious, you can checkout the Arch PKGBUILD. Also see The Meson Build System.

It doesn’t need to. Set your settings once and you may never need to open it again.

Not sure, but libratbag is the shared library that powers piper.

1 Like

If the piper program doesn’t need to automatically start on OS boot up, then how does the mouse know what settings were programmed into it? is it altering the function of my computer’s recognition of mouse inputs? That’s incredibly powerful in terms of how it functions!

Thanks for the info on the ratbag tool. I’ll have to check it out!

Probably through a configuration file, possibly under /etc/X11 somewhere.

1 Like

Could you elaborate a bit more on what the configuration files in the …/etc/ directory do? I didn’t find a config file that looks like X11, but there are quite a few from commands that I have used like xdg, sudo, etc…

[aragorn] >  tree /etc/X11
├── mhwd.d
├── xinit
│   ├── xinitrc
│   ├── xinitrc.d
│   │   ├── 30-gtk3-nocsd.sh
│   │   ├── 40-libcanberra-gtk-module.sh
│   │   ├── 50-systemd-user.sh
│   │   ├── 70-keyboard_settings.sh
│   │   ├── 80appmenu-gtk-module
│   │   └── 80xapp-gtk3-module.sh
│   └── xserverrc
└── xorg.conf.d
    └── 00-keyboard.conf

4 directories, 9 files

Several of those files are read when X11 starts and either contain configuration data or commands that implement certain X11 runtime settings.

1 Like

Interesting. By X11, are you referring to a specific distro of linux?

X11 stands for “the X display server protocol, version 11”, also known as the X Windowing System. And if you dare call it “X Windows” — as many unfortunately do — then somebody will kick you in the butt, and you will have deserved it, bevause the X Windowing System owes its name to being the successor to the W Windowing System — given that the letter X comes after W in the alphabet — and the W Windowing System already existed before Bill Gates released the very first version of Microsoft Windows as a non-multitasking graphical interface on top of MS-DOS.

The standard implementation of X11 on GNU/Linux systems is X.Org. There are yet others, but X.Org is generally chosen because of its free license, and because it is a well-proven technology.

There are also alternative display servers, such as Wayland — which is the default display server in the GNOME edition of Manjaro, and which is supported (as an alternative) in KDE Plasma.

Wayland is supposed to be simpler and faster than X11. However, Wayland is a work in progress, it has difficulties with the proprietary Nvidia drivers, and it isn’t network-transparent, while X11 is.

With X11, you can run a graphical application in the processors and memory of another machine in the network but have its output displayed on your own local screen as if it were running on your own machine. Wayland cannot do this because of how it is designed — it runs a lot of stuff in the kernel’s address space, while X11 runs most of its components in userspace and is network-aware, allowing you to use graphical thin clients as workstations connected to a single UNIX server.

Piper is just a front end for ratbagd(libratbag), libratbag is a library to configure the mouse/keyboard.
So all the customization are actually stored on the mouse onboard memory and libratbag is simply a tool to write that memory.

1 Like

Whoa, that’s pretty interesting. Logitech markets this mouse as not being able to do anything without it’s software. Just goes to show how lame these companies are at the end of the day trying to software block their hardware on windows…

I think it’s not malice but simply laziness…

If the configuration is indeed stored on the device itself, then configuring it on a windows machine (or vm) and using it on any other operating system as configured might be possible.

makes sense! Feel free to help me with my KDE desktop bug if you can! Just posted it on the forum… :frowning: