-
Notifications
You must be signed in to change notification settings - Fork 37
Getting Started
Download the latest .flatpak bundle from the Releases page:
flatpak install --user logitune.flatpak flatpak run com.logitune.Logitune
Note
The Flatpak manifest (com.logitune.Logitune.yml) uses the KDE 6.10 runtime and SDK. It requests access to --device=all for hidraw and registers the D-Bus name com.logitune.app for KWin focus tracking.
See Building for full instructions. The short version:
git clone https://github.com/logitune/logitune.git
cd logitune
make build
make runNote
An AUR package is planned for future releases.
Logitune needs read/write access to hidraw devices and uinput for keystroke injection. A udev rules file is included at data/71-logitune.rules:
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="046d", TAG+="uaccess" KERNEL=="uinput", SUBSYSTEM=="misc", TAG+="uaccess"
Install it:
sudo cp data/71-logitune.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules sudo udevadm trigger
Tip
The uaccess tag grants access to the currently logged-in user without requiring root or group membership. After installing the rules, unplug and replug your device (or reboot).
If Logitune starts but shows "No device connected":
-
Check hidraw access:
ls -la /dev/hidraw*β your user should haverwaccess to Logitech devices -
Check uinput access:
ls -la /dev/uinputβ needed for keystroke injection -
Check the device is detected: Run with
--debugflag to see device scanning logs
./build/src/app/logitune --debug
Warning
If a previous instance crashed without cleanup, the lock file may prevent Logitune from starting. Delete it manually with rm /tmp/logitune.lock.
Logitune uses a lock file at $TMPDIR/logitune.lock to prevent two instances from fighting over the device. If a previous instance crashed without cleanup, delete the lock file manually:
rm /tmp/logitune.lock
The application window is organized into four main areas:
Logitune Settings page
Settings page with debug logging toggle and bug report button
Point & Scroll page
Point & Scroll page showing DPI slider, SmartShift, scroll, and thumb wheel controls
A vertical navigation bar on the left with icons for each page:
| Icon | Page | Description |
|---|---|---|
| π±οΈ Mouse | Point & Scroll | DPI slider, SmartShift toggle/threshold, hi-res scroll, natural scrolling |
| π² Grid | Buttons | Interactive device render with hotspot callouts for each button, plus action picker panel |
| π Switch | Easy-Switch | View paired hosts, active slot |
| βοΈ Gear | Settings | Debug logging toggle, bug report button, about info |
The Buttons page shows a rendered image of the device (front view by default, side view available). Interactive hotspots are overlaid at positions defined by the device descriptor β clicking a hotspot opens the action picker for that button.
A horizontal tab bar at the bottom of the window:
- Default tab is always present β this profile is used for applications without a specific binding
- App profiles appear as additional tabs with the application's icon
- The hardware-active profile (the one currently applied to the device) is indicated with a highlight
- The display profile (the one you're currently viewing/editing) may differ from the hardware-active profile
- Click the + button to add a new app profile from the list of installed applications
Tip
The display profile and hardware profile can differ. Browsing profiles in the UI does not change what's running on the device β only window focus changes trigger hardware writes.
Profiles are stored per-device under:
~/.config/Logitune/devices/<device-serial>/profiles/
Each profile is a .conf file (QSettings INI format). App bindings are stored in app-bindings.conf in the same directory.
Logitune runs as a tray application β closing the window hides it to the tray rather than quitting. The tray menu shows:
- π Battery level β e.g., "Battery: 85%"
- ποΈ Show β brings the window back
- β Quit β exits the application
Note
The application sets quitOnLastWindowClosed(false) so the tray icon keeps the event loop alive.
| Flag | Description |
|---|---|
--debug |
Enable debug logging to file and console at startup |
Debug logging can also be toggled at runtime from the Settings page.
- π Single-instance check β attempts to acquire
logitune.lock - π Log manager init β sets up Qt logging categories, optional file output
- π οΈ Crash recovery β checks for previous unclean shutdown, offers to file a bug report
- ποΈ AppController init β creates DeviceManager, ProfileEngine, models, wires signals
- πΌοΈ QML engine load β registers model singletons, loads
Main.qml - π‘ Start monitoring β DeviceManager begins udev scanning and KDE desktop starts focus tracking
- π Device connect β on first hidraw match, enumerates HID++ features, reads state, creates command queue
- π Profile load β loads or seeds the default profile, applies settings to hardware
- π Tray icon β system tray icon appears with battery info