pwr-Solaar / Solaar

Linux device manager for Logitech devices
https://pwr-solaar.github.io/Solaar
GNU General Public License v2.0
5.2k stars 398 forks source link

Windows port #1586

Open BierDav opened 2 years ago

BierDav commented 2 years ago

See PR #1971 for more information.

How much effort would it be to add Windows support. So that in the end you can use solaar in combination with a second software (mine eg.) to create something like logitech flow just better. With better connectivity, debuggability, ... If it is doable, I want to ask if there are some motivated people out there, which would like to help me :)

pfps commented 2 years ago

Solaar does a number of low-level things that would have to be ported to Windows. There is device discovery which uses several complex aspects of Linux. There is direct access to the HID++ device interface. There are the interactions between rules and the OS. It should be possible to do all of these in Windows, but that requires someone who knows Windows. The critical bits are the first two. The GUI interface is mostly done using GTK so that part should be easy to port.

There is an enhancement request to port to Mac OS #1244. Some of the effort to port to Windows could be shared with an effort to port to Mac OS.

hgkamath commented 1 year ago

A thank-you to the developers of this awesome utility. I'm gonna try-out solaar I reboot next time into Linux-Fedora-36. I chanced on this project while searching for alternatives on windows. On windows, the logitech setpoint (for my K810) is a whole lot of bloatware, about ~100Mb. One hopes for a small binary utility, as small as for Linux, <2MB size, be it a cli, tui or a simple-gui (qt or otherwize).

pfps commented 1 year ago

I think most of the size of the Logitech software is images, which are somewhat helpful.

A port of the CLI part of Solaar would be much simpler than a port of the low-level code supporting the GUI.

pfps commented 1 year ago

Please look at PR #1971 and check it out.

centuryboy774 commented 2 months ago

Why? Not to be rude but the logitech software hub exists for windows and macOS. Logitech already covers OS'S with there good software. Only a shame they refuse to port it to linux like every other company. This issue being open seems to hogging up space for other more important endeavors. The whole point of this project is to help linux users control there logitech devices that logitech refuses to make there software for linux.

hgkamath commented 2 months ago

Firstly, thank-you to the developer(s) for contributing to the project and also considering windows, and other OS.
v1.11, released on 20240218, had partial support for macOS and minimal support for Windows.

I use Linux and Windows almost equally, Linux slightly more, but I do think the ports for other OS-es are equally useful.

Windows users want to be free from both Microsoft's and Logitech's bloat and potentially telemetry too.

Being a python project that uses a interpreter/bytecodeVM, as long as the python-libraries and imports abstract away the OS dependencies (say just like how wxwidgets/wxpython, a GUI toolkit, does) it should be fine to stay ahead on Linux development, and let features on other OS catch up when volunteer developer cycles free up. For this to happen, one mustn't hard-code too many Linux-specific dependencies without a way to abstract, because that will foreclose possibilities for other OSes, or make things harder to change later on. With a good OS abstraction, development for Linux would not be hindered, and Linux features can proceed with full steam ahead. Good OS abstraction is good programming art in itself.

The claim that a little bit of architecture-time over-watch to ensure OS portability is hogging space/resources may not be true. The commit log shows the project is progressing. The existence of an open-source fresh independent black-box re-implementation Logitech's HID++ protocol, which achieves the same function as the proprietary, necessarily raises developers understanding of how the Logitech's software configuration protocol works on Windows. For any OS, the code in kernel or library that implements HID++ has to speak this protocol with the devices. Each OS needs to have device drivers for the HID++ device and must have a shared library to expose the protocol-API to a user-process. A userspace front-end configuration program then uses the HID++ API and allows the user to do modify device setttings. pwr-solaar is then one such front-end that uses the HID++ protocol. Presets for various models/devices exist for exposing relevant controls/settings. Its software architecture isn't going to be so drastically different so as to make portability a insurmountable challenge. Logitech itself had to design its proprietary software and protocol so that it can ported between MacOS and Windows, OS-portability would be inherent to/baked into the the configuration protocol. So aiming for portability in the front-end is a non-issue.

It also helps expands the project's user base. If Windows users also switch to pwr-solaar, then all the more users of the project. If some are development aware they can contribute to bug catching and if they also know python they could contribute to feature development, such activity may benefit users of all OS commonly.

As mentioned in an earlier comment, a port of the cli and library that lets a user do command line configuration and or custom python scripting/tooling around using it is also sufficient. The current portable (Solaar-1.1.12.zip) unzipped is about 4.4 MiB which is decent.

That Logitech intentionally refuses to make Linux drivers is information that users should consider at purchase time. A user needs information on available alternative products that work and are supported on Linux, both as in-kernel-driver and with a configuration tool. Such information needs to disseminated. That's good to know.