Skip to content

Getting Started

Mina Maher edited this page Apr 1, 2026 · 9 revisions

πŸ“š Getting Started

πŸ“¦ Installation

πŸ“€ Flatpak (Recommended)

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.

πŸ”§ From Source

See Building for full instructions. The short version:

git clone https://github.com/logitune/logitune.git
cd logitune
make build
make run

πŸ—οΈ Arch Linux (AUR)

Note

An AUR package is planned for future releases.

πŸš€ First Run

πŸ”‘ udev Rules

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

πŸ” Permissions Check

If Logitune starts but shows "No device connected":

  1. Check hidraw access: ls -la /dev/hidraw* β€” your user should have rw access to Logitech devices
  2. Check uinput access: ls -la /dev/uinput β€” needed for keystroke injection
  3. Check the device is detected: Run with --debug flag 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.

πŸ”’ Single-Instance Guard

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

πŸ–ΌοΈ UI Overview

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

πŸ“‹ Sidebar Navigation

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

πŸ–±οΈ Device Render

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.

πŸ“‘ Profile Bar

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.

πŸ’Ύ Settings Storage

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.

πŸ”” Tray Icon

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.

⌨️ Command-Line Options

Flag Description
--debug Enable debug logging to file and console at startup

Debug logging can also be toggled at runtime from the Settings page.

⚑ What Happens at Startup

  1. πŸ”’ Single-instance check β€” attempts to acquire logitune.lock
  2. πŸ“ Log manager init β€” sets up Qt logging categories, optional file output
  3. πŸ› οΈ Crash recovery β€” checks for previous unclean shutdown, offers to file a bug report
  4. πŸŽ›οΈ AppController init β€” creates DeviceManager, ProfileEngine, models, wires signals
  5. πŸ–ΌοΈ QML engine load β€” registers model singletons, loads Main.qml
  6. πŸ“‘ Start monitoring β€” DeviceManager begins udev scanning and KDE desktop starts focus tracking
  7. πŸ”Œ Device connect β€” on first hidraw match, enumerates HID++ features, reads state, creates command queue
  8. πŸ“‚ Profile load β€” loads or seeds the default profile, applies settings to hardware
  9. πŸ”” Tray icon β€” system tray icon appears with battery info


Logitune Wiki


🏠 Home

πŸ“š User Guide

πŸ—οΈ Architecture

πŸ”§ Extending

πŸ§ͺ Quality

Clone this wiki locally